package com.github.dongglin.smart.spring.boot.plus.web.service;

import com.github.dongglin.smart.spring.boot.plus.core.framework.pager.PageResult;
import com.github.dongglin.smart.spring.boot.plus.core.framework.service.OptionalBaseService;
import com.github.dongglin.smart.spring.boot.plus.web.dto.FormInfoAddDTO;
import com.github.dongglin.smart.spring.boot.plus.web.dto.FormInfoUpdateDTO;
import com.github.dongglin.smart.spring.boot.plus.web.entity.FormInfo;
import com.github.dongglin.smart.spring.boot.plus.web.req.FormInfoRequest;
import com.github.dongglin.smart.spring.boot.plus.web.resp.FormInfoDetailVo;
import com.github.dongglin.smart.spring.boot.plus.web.resp.FormInfoResponse;

/**
 *  服务接口
 *
 * @author DongGL
 * @since 2023-09-20
 */
public interface FormInfoService extends OptionalBaseService<FormInfo> {

    /**
     * 添加
     *
     * @param formInfoAddDTO formInfoAddDTO
     * @return boolean
     * @throws Exception ex
     */
    boolean addFormInfo(FormInfoAddDTO formInfoAddDTO) throws Exception;

    /**
     * 修改
     *
     * @param formInfoUpdateDTO formInfoUpdateDTO
     * @return boolean
     * @throws Exception ex
     */
    boolean updateFormInfo(FormInfoUpdateDTO formInfoUpdateDTO) throws Exception;

    /**
     * 删除
     *
     * @param id id
     * @return boolean
     * @throws Exception ex
     */
    boolean deleteFormInfo(Long id) throws Exception;

    /**
     * 详情
     *
     * @param id id
     * @return FormInfoDetailVo
     * @throws Exception ex
     */
    FormInfoDetailVo getFormInfoById(Long id) throws Exception;

    /**
     * 分页列表
     *
     * @param formInfoRequest formInfoRequest
     * @return PageResult<FormInfoResponse>
     * @throws Exception ex
     */
    PageResult<FormInfoResponse> getFormInfoPagerList(FormInfoRequest formInfoRequest) throws Exception;

}
